﻿
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace LibNiconico.NiconicoApi.Internal.Http
{
    internal interface INiconicoHttpClient : IDisposable
    {
        CookieContainer CookieContainer { get; }

        ICollection<KeyValuePair<string, string>> Headers { get; }


        void AddHeader(string name, string value);

        void SetCookie(Uri uri, Cookie cookie);

        void SetCookies(Uri uri, CookieCollection cookies);

        Task<NiconicoHttpResponse<Stream>> GetStreamAsync(Uri uri);

        Task<NiconicoHttpResponse<string>> GetStringAsync(Uri uri);

        Task<NiconicoHttpResponse<CookieContainer>> GetCookieAsync(Uri uri);

        Task<NiconicoHttpResponse<CookieContainer>> PostCookieAsync(Uri uri, NicoPostAble content);

        Task PostAsync(Uri uri, NicoPostAble constant);

        Task<NiconicoHttpResponse<string>> PostStringAsync(Uri uri, NicoPostAble content);

        Task<NiconicoHttpResponse<Stream>> PostStreamAsync(Uri uri, NicoPostAble content);


    }
}
